/**
 * @file Q2Interface.h
 * @brief 节点属性插值问题的接口定义
 */
#pragma once
#include <string>

namespace Q2 {

/**
 * @brief 节点属性插值接口类
 * 
 * 提供节点间属性插值功能：
 * 1. 从已知节点到未知节点的属性插值
 * 2. 支持S1属性的插值
 * 3. 自动选择最优插值算法
 */
class NodeInterpolator {
public:
    /**
     * @brief 执行节点属性插值
     * @param known_nodes_file 已知节点文件路径
     * @param unknown_nodes_file 未知节点文件路径
     * @param output_file 输出结果文件路径
     * @param k_nearest K近邻搜索的邻居数量(默认为20)
     * @throw std::runtime_error 当文件操作或插值计算失败时抛出异常
     * 
     * 执行流程:
     * 1. 读取已知节点和未知节点数据
     * 2. 构建KD树进行空间搜索
     * 3. 执行并行化的插值计算
     * 4. 输出插值结果到文件
     */
    static void interpolate(const std::string& known_nodes_file,
                          const std::string& unknown_nodes_file,
                          const std::string& output_file,
                          size_t k_nearest = 20);
};

} // namespace Q2 